//#include <iostream>
//#include <vector>
//#include <map>
//using namespace std;
//
//template<typename T>
//using vec = vector<T>;
//
//#define Echo(e) cout << #e": " << e << " "
//
////struct my_test_Str {
////	static void Print() { cout << "Print\n"; }
////};
////using my_test_Str::Print; // vs上对于类的静态成员函数也无法使用using
//
//void test1() {
//	vec<int>arr(10, 0);
//	for (auto e : arr) Echo(e);
//	cout << endl;
//	//Print();
//}
//
//void test2() {
//	decltype(vector<int>{})::value_type a;
//	cout << typeid(a).name() << endl;
//
//	decltype(map<string, int>())::value_type b;
//	cout << typeid(b).name() << endl; // pair<string, int>
//
//	int c = 10, *p = &c;
//	decltype(c) cc = c;
//	decltype(*p) ccc = c;
//	cout << typeid(cc).name() << endl; // int
//	cout << typeid(ccc).name() << endl; // int
//	
//	ccc = 20;
//	cout << c << endl; // 20
//
//	const int d = 20;
//	cout << typeid(d).name() << endl; // int
//}
//
//void test3() {
//	unique_ptr<int> arr(new int);
//	auto arr2 = make_unique<int>;
//	unique_ptr<int>arr3(make_unique<int>(10));
//}
//
//int main() {
//	test2();
//	return 0;
//}